large function with multiple criteria